package com.lthlearn.service.impl;

import com.lthlearn.mapper.CollectMapper;
import com.lthlearn.mapper.TravelMapper;
import com.lthlearn.pojo.Result;
import com.lthlearn.pojo.Travel;
import com.lthlearn.service.CollectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * @author: 2942733239@qq.com
 * @date: 2024/11/7 19:13
 * @description: com.lthlearn.service.impl
 * @version: 1.0
 */
@Service
public class CollectServiceImpl implements CollectService {

    @Autowired
    private CollectMapper collectMapper;

    /**
     * 根据当前用户 id 查找所有收藏
     *
     * @param userId
     * @return
     */
    // @Override
    // public Result findCollectByUserId(Integer userId) {
    //     // 1.根据当前登录的用户 id 查询收藏表中所有收藏的地点 id
    //     List<Integer> list = collectMapper.findPlaceIdByUserIdStepTwo(userId);
    //     if (list == null || list.isEmpty()) {
    //         return new Result("500", "查询失败，收藏为空", Collections.emptyList());
    //     }
    //     // 2.根据景点 id 查询所有旅游景点信息
    //     List<Travel> travelList = travelMapper.getByIds(list);
    //     if (travelList == null || travelList.isEmpty()) {
    //         // 查询结果为空，返回空集合
    //         return new Result("500", "查询失败，后台错误", Collections.emptyList());
    //     }
    //     return new Result("200", "查询成功", travelList);
    // }

    /**
     * 根据用户 id 和景点 id 查找当前用户的收藏的景点是否在收藏表
     *
     * @param userId
     * @param placeId
     * @return
     */
    @Override
    public Result checkCollectByUserIdAndPlaceId(Integer userId, Integer placeId) {
        // 检查当前用户是否收藏指定景点
        if (collectMapper.checkCollect(userId, placeId) > 0) {
            // 已收藏
            return new Result("200", "已收藏");
        }
        // 未收藏
        return new Result("500", "未收藏");
    }

    /**
     * 添加收藏
     * 建议收藏前检查收藏表是否收藏该景点
     * 加上事务
     *
     * @param userId
     * @param placeId
     * @return
     */
    @Override
    public Result addCollect(Integer userId, Integer placeId) {
        // 未收藏
        int count = collectMapper.insertCollect(userId, placeId);
        // 判断新增是否成功
        if (count <= 0) {
            // 没成功
            return new Result("500", "收藏失败，后台错误");
        }
        // 新增成功
        return new Result("200", "收藏成功");
    }

    /**
     * 删除收藏
     * 建议收藏前检查收藏表是否收藏该景点
     * 加上事务
     *
     * @param userId
     * @param placeId
     * @return
     */
    @Override
    public Result removeCollect(Integer userId, Integer placeId) {
        Boolean success = collectMapper.deleteCollect(userId, placeId);
        // 判断删除是否成功
        if (!success) {
            // 没成功
            return new Result("500", "取消收藏失败");
        }
        // 删除成功
        return new Result("200", "取消收藏成功");
    }

}
